/** * createRouter 这个为创建路由的方法 * createWebHashHistory 这个就是vue2中路由的模式， * 这里的是hash模式，这个还可以是createWebHistory等 * RouteRecordRaw 这个为要添加的路由记录，也可以说是routes的ts类型 */
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
// import homeRouter from './Home';
import NProgress from "@/config/nprogress";


// * 导入所有router
const routerArray:Array<RouteRecordRaw> = [] ;
const modules = import.meta.glob("./modules/*.ts",{ eager: true,import:'default' });
Object.keys(modules).forEach((key:string)   =>{
    let arr = modules[key] as Array<RouteRecordRaw>;
    for(let i=0;i<arr.length;i++) routerArray.push(arr[i]);
});


// 路由记录，这个跟vue2中用法一致，就不做过多解释了
const routes: Array<RouteRecordRaw> = [
  {
    path: '/',
    component: () => import("@/layout/index.vue"),
    redirect: '/home/index',
    children:[...routerArray]
  },
];
const router = createRouter({
  history: createWebHistory(import.meta.env.VITE_BASE_URL  ),
 
  routes
});

router.beforeEach((to, from, next) => { 
   const title = import.meta.env.VITE_GLOB_APP_TITLE;
	 document.title = to.meta.title ? `${to.meta.title} - ${title}` : title;
   NProgress.start();
   next();
})
/**
 * @description 路由跳转结束
 * */
router.afterEach((to, from) => {
	NProgress.done();
  if(to.path !== from.path) document.documentElement.scrollTop = 0;

});

/**
 * @description 路由跳转错误
 * */
router.onError(error => {
	NProgress.done();
	console.warn("路由错误", error.message);
});

export default router;